package com.wwu.admin.webinit;

import com.wwu.common.constant.CommConst;
import com.wwu.common.constant.ResultConst;
import com.wwu.system.service.ISysConfigService;
import com.wwu.system.service.ISysDictService;
import com.wwu.system.service.ISysParamService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

/**
 * 实现CommandLineRunner接口，项目启动后初始化缓存
 * CommandLineRunner中的Order表示在项目启动时预先加载的类
 * @author 一蓑烟雨
 * @version 1.0.0
 * @date 2023-07-12 17:44
 */
@Slf4j
@Component
@Order(1)
public class RedisInitialize implements CommandLineRunner {
    /** 注入系统字典接口服务*/
    @Resource
    private ISysDictService sysDictService;
    /** 注入系统配置接口服务 */
    @Resource
    private ISysConfigService sysConfigService;
    /** 注入系统参数接口服务 */
    @Resource
    private ISysParamService sysParamService;

    /** 注入运行环境 */
    @Value("${spring.profiles.active}")
    private String profiles;

    /**
     * 重写CommandLineRunner接口的run方法
     * @param args 启动参数
     * @author 一蓑烟雨
     * @date 2023/7/12 17:47
     */
    @Override
    public void run(String... args) throws Exception {
        //开发环境不加载缓存
        if (CommConst.PROFILES_ACTIVE_DEV.equals(profiles)) {
            return;
        }
        //加载系统字典缓存
        if(ResultConst.SUCCESS_CODE == sysDictService.sysDictCache().getCode()){
            log.info("--------------------系统字典缓存初始化成功--------------------");
        }
        //加载系统配置缓存
        if(ResultConst.SUCCESS_CODE == sysConfigService.sysConfigCache().getCode()){
            log.info("--------------------系统配置缓存初始化成功--------------------");
        }
        //加载系统参数缓存
        if(ResultConst.SUCCESS_CODE == sysParamService.sysParamCache().getCode()){
            log.info("--------------------系统参数缓存初始化成功--------------------");
        }
    }
}
